//导入工具包 require('node_modules里对应模块')
var gulp = require('gulp'); //本地安装gulp所用到的地方

var rename = require("gulp-rename");
var concat = require('gulp-concat');
var del = require('del');
var filter = require('gulp-filter');
var uglify = require("gulp-uglify");  //压缩
var csso = require('gulp-csso');
var htmlminify = require('gulp-html-minify');
var zip = require('gulp-zip');
var autoprefixer = require('gulp-autoprefixer');

// 重命名 前缀 后缀
gulp.task('rename_test', function () {
    gulp.src('./src/rename_01.txt')
        .pipe(rename('src/hello.md'))    // 直接修改文件名和路径
        .pipe(gulp.dest('./dist'));

    gulp.src('./src/rename_02.txt')
        .pipe(rename({
            dirname: "myFolderPath",                // 路径名
            basename: "goodbye",            // 主文件名
            prefix: "pre-",                 // 前缀
            suffix: "-min",                 // 后缀
            extname: ".html"                // 扩展名
        }))
        .pipe(gulp.dest('./dist'));
});


// 合并
gulp.task('concat_test', function () {

    gulp.src('./src/js/*.js')
        .pipe(concat('all.js'))         // 合并all.js文件
        .pipe(gulp.dest('./dist/js/'));

    gulp.src(['./src/js/concat_01.js', './src/js/concat_02.js', './js/concat_03.js'])
        .pipe(concat('all_arr.js'))         // 按照[]里的顺序合并文件
        .pipe(gulp.dest('./dist/js/'));
});


// 删除
gulp.task('del_test', function () {
    del('./dist');                      // 删除整个dist文件夹
});


// 过滤
gulp.task('filter_test', function () {

    del('./dist');

    const f = filter(["**", '!**/filter_02.js']);

    gulp.src('./src/js/*.js')
        .pipe(f)                        // 过滤掉index.js这个文件
        .pipe(gulp.dest('dist/src/js'));
});

// 过滤  返回到未过滤执行的所有文件  
gulp.task('filter_test_02', function () {

    del('./dist');

    const f1 = filter(['**', '!**/filter_02.js'], { restore: true });
    gulp.src('./src/js/**/*.js')
        .pipe(f1)                       // 过滤掉index.js这个文件
        .pipe(f1.restore)               // 返回到未过滤执行的所有文件
        .pipe(gulp.dest('./dist'));       // 再对所有文件操作，包括index.js


});

//压缩
gulp.task('uglify_test', function () {

    // del('./dist');        

    gulp.src('./src/js/filter_01.js')
        .pipe(uglify())                 // 直接压缩hello.js
        .pipe(gulp.dest('./dist/js'))


});

gulp.task('csso_test', function () {

    del('./dist');

    gulp.src('./src/css/*.css')
        .pipe(csso())
        .pipe(gulp.dest('./dist/css'))


});

gulp.task('html_test', function () {

    del('./dist');

    gulp.src('index.html')
        .pipe(htmlminify())
        .pipe(gulp.dest('./dist'))

});

gulp.task('zip_test', function () {

    gulp.src('./dist')
        .pipe(zip('all.zip'))                   // 压缩成all.zip文件
        .pipe(gulp.dest('./'))

});



gulp.task('prefixer_test', function () {

    gulp.src('./src/css/*.css')
        .pipe(autoprefixer())           // 直接添加前缀
        .pipe(gulp.dest('dist/css'))


    gulp.src('./src/css/*.css')
        .pipe(autoprefixer({
            browsers: ['last 2 versions'],      // 浏览器版本
            cascade: true,                       // 美化属性，默认true
            add: true,                           // 是否添加前缀，默认true
            remove: true,                        // 删除过时前缀，默认true
            flexbox: true                       // 为flexbox属性添加前缀，默认true
        }))       // 直接添加前缀
        .pipe(gulp.dest('dist/css'))

});





gulp.task('default', ['rename_test', 'concat_test']); //定义默认任务 elseTask为其他任务，该示例没有定义elseTask任务
